package com.shinbada.modules.sys.mapper;

import com.shinbada.core.persistence.TreeMapper;
import com.shinbada.modules.sys.entity.Office;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 机构MAPPER接口
 *
 * @author initcap
 * @version 2017-05-16
 */
@Mapper
@Repository
public interface OfficeMapper extends TreeMapper<Office> {

    /**
     * 根据编码获取机构
     *
     * @param code 编码
     * @return 机构信息
     */
    Office getByCode(String code);

    /**
     * 统计同层级下名称个数
     *
     * @param id       主键
     * @param parentId 父级编号
     * @param name     名称
     * @return 个数
     */
    int countCurrentLevelName(@Param("id") String id, @Param("parentId") String parentId, @Param("name") String name);

    /**
     * 获取指定子集
     *
     * @param parentId  父主键
     * @param companyId 公司主键
     * @return 集合
     */
    List<Office> getChildrenByCompanyId(@Param("parentId") String parentId, @Param("companyId") String companyId);
}
